#if !defined(OBJECT_HPP)
#define OBJECT_HPP

#include <optional>

#include "Eigen"

#include "Ray.hpp"
#include "ShadePayload.hpp"

// 空间中的物体基类，属于接口
class Object {
protected:
    // epsilon是一个很小很小的正数
    static constexpr float epsilon = 0.005f;
    
public:
    virtual std::optional<ShadePayload> hit(const Ray& ray)const = 0;
};


#endif // OBJECT_HPP